06. 变量作用域
在编程时,你可能会经常产生相似的想法。在计数、迭代和累加返回值等过程中,你都需要使用变量。为了编写可读性更高的代码,你可能会针对相似变量使用相似的名称。在将多段代码放在一起时(例如,单个脚本中的多个函数或函数调用),你可能会发现两个不同部分中的变量需要使用相同的名称。
幸运的是,你并不需要想出无数个新名称。你可以将变量名称保留在不同的作用域(Scope)内,即可重复使用对象的名称。作用域是指变量可以被引用的程序部分。
如果变量是在函数内被创建的,则只能在该函数内使用此变量。
现在我们来看看下面两个函数
word_count
和
nearest_square
。这两个函数都包含一个
answer
变量,但它们只存在在各自的函数中。
def word_count(document, search_term):
""" Count how many times search_term appears in document. """
words = document.split()
answer = 0
for word in words:
if word == search_term:
answer += 1
return answer
def nearest_square(limit):
""" Find the largest square number smaller than limit. """
answer = 0
while (answer+1)**2 < limit:
answer += 1
return answer**2
最好的做法是在所需的最小作用域内定义变量。虽然函数 可以 引用更大范围内定义的变量,但这并不是个好主意。